Wir führen alle Schritte als user root durch, und gehen z.B. davon aus, dass wir uns im Verzeichnis /root befinden.
Zunächst muss ein Zertifikat erzeugt werden (bitte passen die die Verzeichnisnamen jeweils an Ihr OpenSSL-Paket an):
/usr/share/ssl/misc/CA.sh -newca
Sie geben ein Passwort ein und die jeweiligen Angaben (Land, Organisation etc.). Beim "Common Name" muss der DNS-Servername des Webservers angegeben werden - dies ist wichtig, denn sonst erhalten die Anwender beim Aufruf der Seit eine Warnung, die ungefähr so aussieht:
. Ein Challenge Passwort ist erst einmal nicht notwendig. Am Ende der Prozedur muss man noch einmal das eingegebene Passwort eingeben.
Ein Beispiel |
mercury:~ # /usr/share/ssl/misc/CA.sh
-newca |
Das öffentliche CA-Zertifikat liegt nun in /root/demoCA/cacert.pem und der private Schlüssel liegt in /root/demoCA/private/cakey.pem..
Nun werden die Schlüssel dem Apache2 bekannt gemacht. Die einzelnen Konfigurationsparameter werden bei SuSE Linux über die Sysconfig gesetzt:
Apache2 mit SSL |
SuSE-typisch
wird die Konfiguration in einer Datei im Verzeichnis /etc/sysconfig
abgelegt, nämlich in apache2. Dort setzen Sie in der Direktive |
Bei anderen Linux-Distributionen entfällt die sysconfig. Auch unabhängig von der Distribution wird beim Apache2 nicht mehr die gesamte Konfiguration in einer großen httpd.conf gesammelt, sondern in separaten conf-Dateien. Bei virtuellen Hosts zum Beispiel befinden sich die Konfigurationen in Dateien mit der Endung *.conf im Verzeichnis vhosts.d. Der Startpunkt ist aber immer die httpd.conf (standardmäßig in /etc/apache2).
Wenn Sie keine Virtual Hosts nutzen, dann können Sie den Abschnitt, der im Konfigurationsbeispiel /etc/apache2/vhosts.d/vhost-ssl.template beschrieben ist auch in der Datei /etc/apache2/default-server.conf einfügen:
/etc/apache2/ |
## |
Danach müssen Sie in /etc/sysconfig/apache2 die Systemvariable HTTPD_START_TIMEOUT auf einen sinnvollen Wert setzen, z.B. 10. Danach wie immer SuSEconfig ausführen.
Sie haben dann beim Start des Apache 10 Sek. Zeit, dass CA-Passwort einzugeben.
Wenn sie wünschen, dass der Apache beim Booten ohne Passwort-Abfrage startet, dann müssen Sie das CA-Passwort löschen und die Leserechte für den privaten Schlüssel ändern (nur root und der Apache-Daemon haben Leserecht)[17]. Dies ist allerdings ein Sicherheitsrisiko; der Server wird leichter kompromittierbar, wenn ein Hacker auf den Rechner kommt und die Datei lesen kann, kann er den Schlüssel missbrauchen. Unserer Erfahrung nach ist aber nur dieser Weg gangbar, denn bei einem Reboot nach Stromausfall würde der gesamte Webserver sonst nicht laufen!
Wir geben als root im Verzeichnis /root/demoCA/private ein:
openssl rsa -in cakey.pem -out cakey2.pem
(1x mit der Passphrase bestätigen).
Dann wird ein Schlüssel ohne Passphrase erzeugt. Wenn wir diesen dann wiederum in /etc/httpd/httpd.conf eintragen:
#SSLCertificateKeyFile /root/demoCA/private/cakey.pem
SSLCertificateKeyFile /root/demoCA/private/cakey2.pem
Dann startet der Apache ohne Passwortabfrage. In diesem Fall kann man auch die Variable HTTPD_START_TIMEOUT auf 1 zurücksetzen.
Wenn Sie Ihren Besuchern das öffentliche CA-Zertifikat zum Download anbieten möchten, müssen Sie dieses zuerst in das entsprechende DER-Format konvertieren:
openssl x509 -in demoCA/cacert.pem -out capub.crt -outform DER
Es wird die Datei /root/capub.crt erzeugt. Auf diese Datei wird in der Apache-Variable SSLCertificateFile verwiesen (statt wie oben auf /root/demoCA/cacert.pem)
|
# Server Certificate: |
Wenn Sie Ihr Zertifikat
bei einer Zertifizierungstelle signieren lassen möchten, müssen Sie die Zertifizierungsanfrage
erzeugen. Mit
/usr/share/ssl/misc/CA.sh
-newreq
erzeugen Sie ein neues Zertifikat, das Passwort sollte auf keinem Fall dem
obigen Server-Zertifikat entsprechen.
Danach müssen Sie die Datei newreq.pem mit folgendem Befehl in eine separate Datei speichern. Senden Sie auf gar keinen Fall die Datei newreq.pem zur Zertifizierungsstelle, da diese zusätzlich Ihren privaten Schlüssel enthält.
openssl req -text -in newreq.pem -out request.pem
Wie und in welchem Format Sie die Anfrage an die von Ihnen ausgewählte Zertifizierungsstelle senden müssen, erfahren Sie von der entsprechenden Zertifizierungsstelle.
Mit dem weiter oben erstellten CA-Zertifikat können Sie Ihr http-Zertifikat folgendermaßen selbst signieren:
/usr/share/ssl/misc/CA.sh -sign
Es wird eine Datei newcert.pem erzeugt. Nachdem Sie nun ein signiertes Zertifikat für Ihre Anwendung erstellt haben, müssen Sie dieses nur noch in das entsprechende Verzeichnis kopieren und in der Konfigurationsdatei eintragen. Der Apache erwartet den privaten Schlüssel in einer separaten Datei, in solchen Fällen können Sie den privaten Schlüssel wie folgt extrahieren
openssl rsa -in newreq.pem -out newkey.pem
![]() |
![]() ![]() |
Seite 77 / 277 Letzter Update: 18.08.2008 Impressum |